#ifndef __NJGIS_INJSERVICEACCESS_H__
#define __NJGIS_INJSERVICEACCESS_H__

#include "INxModelService.h"
#include "INxDataConfiguration.h"
#include "INxModelServiceRecord.h"
#include "INxModelServiceInstance.h"
#include <vector>

namespace NJGIS
{
    namespace SERVICE 
    {
        class INjServiceAccess : public virtual INjService
        {
        public:
            //! get model service list
            virtual int getModelServicesList(std::vector<NJGIS::SERVICE::INjModelService*> &list) = 0;

            //! get model service by OID
            virtual NJGIS::SERVICE::INjModelService* getModelServiceByOID(const char* oid) = 0;

            //! get model servcie by name
            virtual int getModelServicesByName(const char* name, std::vector<NJGIS::SERVICE::INjService*> &list) = 0;

			//! get model service record by id
			virtual INjModelServiceRecord* getModelServiceRecordByID(const char* msrid) = 0;

			//! get model service instance by id
			virtual INjModelServiceInstance* getModelServiceInstanceByGUID(const char* guid) = 0;

			//! get a data service
			virtual NJGIS::SERVICE::INjData* getDataServiceByID(const char* id) = 0;

			//! upload a data file
			virtual NJGIS::SERVICE::INjData* uploadDataByFile(const char* filepath, const char* tag) = 0;

			//! upload a data stream
			virtual NJGIS::SERVICE::INjData* uploadDataStream(const char* stream, const char* tag) = 0;

			//! create a data configuration
			virtual NJGIS::SERVICE::INjDataConfiguration* createDataConfig() = 0;
        };

	}
}

#endif